#统计排序滤波器：最大值滤波器、中值滤波器和最小值滤波器
#下面做出灰度图像(gray)的中值滤波
from scipy import ndimage
from skimage import data,util,io
from matplotlib import pyplot as plt
# img为原始图像(红色通道图像)
#img = data.astronaut()[:,:,0] #取原图像的红色通道为1，1是绿，2是蓝
img = io.imread(fname = '和平精英.jpg')[:,:,0]
plt.imshow(img)
#对图像加椒盐噪声
noise_img = util.random_noise(img,mode = 's&p',seed = None,clip = True)
#中值滤波
n = 3
new_img = ndimage.median_filter(noise_img,(n,n))
#显示图像
plt.figure()
plt.imshow(img,cmap = 'gray') #显示原始图像,gray是进行灰度处理
plt.figure()
plt.imshow(noise_img,cmap = 'gray') #显示加噪图像
plt.figure()
plt.imshow(new_img,cmap = 'gray') #显示降噪图像

#灰度图像的数组是两列的，如image = (512,512)，彩色图像是三列(512,512,3)
#对灰度图像进行加噪处理后，用中值滤波进行降噪，也就是保留住图片中想要的成分
#发现与原图像image相比十分接近，说明此降噪方法是有效的